APScheduler事件监听功能 您所在的位置:网站首页 python apscheduler配置 APScheduler事件监听功能

APScheduler事件监听功能

2023-09-01 13:09| 来源: 网络整理| 查看: 265

先说一下背景 一个项目在开发过程中使用apscheduler来管理定时任务,通过redis,在偶然间遇到定时任务不执行的情况,仔细排查了一下,是在设置好的任务执行时间点并没有去执行,在远过于设置时间之后才去执行设置的任务,在这种情况下apscheduler判断当前时间已经和设置的时间相差太大而不去执行此次任务,当然在这种情况下我们可以设置misfire_grace_time(单位s)参数来决定在误差范围内继续执行这个任务,如

scheduler.add_job(start, 'interval', days=1, coalesce=True, misfire_grace_time=60, start_date='2020-11-23 00:00:01', end_date='2020-12-30 11:59:59')

但感觉这不是解决问题的根本原因,在测试环境中也没有办法查看apscheduler的debug信息,(而且在不执行的时候Event还监听不到exception信息),在找了一些资料后发现Event.code挺好用,整理了一下,如下:

def job_listener(Event): print(Event.dict)

{'code': 4096, 'alias': None, 'job_id': 'jsc_355_begin', 'jobstore': 'redis', 'scheduled_run_time': datetime.datetime(2020, 11, 30, 15, 43, 45, tzinfo=), 'retval': None, 'exception': None, 'traceback': None}

Event.code 以下是整理的 常量

EVENT_SCHEDULER_SHUTDOWN = 2 ** 1 // 2 调度程序已关闭 EVENT_SCHEDULER_PAUSED = 2 ** 2 // 4 调度程序中的作业处理已暂停 EVENT_SCHEDULER_RESUMED = 2 ** 3 // 8 调度程序中的作业处理已恢复 EVENT_EXECUTOR_ADDED = 2 ** 4 // 16 将执行程序添加到调度程序中 EVENT_EXECUTOR_REMOVED = 2 ** 5 // 32 遗嘱执行人被移交给调度员 EVENT_JOBSTORE_ADDED = 2 ** 6 // 64 作业存储已添加到调度程序 EVENT_JOBSTORE_REMOVED = 2 ** 7 // 128 作业存储已从调度程序中删除 EVENT_ALL_JOBS_REMOVED = 2 ** 8 // 256 所有作业已从所有作业存储库或一个特定的作业存储库中删除 EVENT_JOB_ADDED = 2 ** 9 // 512 作业已添加到作业存储中 EVENT_JOB_REMOVED = 2 ** 10 // 1024 从作业存储中删除了作业 EVENT_JOB_MODIFIED = 2 ** 11 // 2048 从计划程序外部修改了作业 EVENT_JOB_EXECUTED = 2 ** 12 // 4096 作业已成功执行 EVENT_JOB_ERROR = 2 ** 13 // 8192 作业在执行期间引发异常 EVENT_JOB_MISSED = 2 ** 14 // 16384 错过了工作执行 EVENT_JOB_SUBMITTED = 2 ** 15 // 32768 作业已提交给执行者以运行 EVENT_JOB_MAX_INSTANCES = 2 ** 16 // 65536 提交给执行者的作业未被执行者接受,因为该作业已达到其最大并发执行实例数


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有